#include <smmintrin.h>
#include <iostream>

int main() {
    // 创建一个包含四个浮点数的 __m128 向量
    __m128 floatVec = _mm_set_ps(1.5f, -2.7f, 3.3f, -4.9f);

    // 使用 _mm_cvttps_epi32 进行转换（向零取整）
    __m128i truncatedVec = _mm_cvttps_epi32(floatVec);

    // 使用 _mm_cvtps_epi32 进行转换（四舍五入）
    __m128i roundedVec = _mm_cvtps_epi32(floatVec);

    // 提取并打印结果
    int* truncated = (int*)&truncatedVec;
    int* rounded = (int*)&roundedVec;

    std::cout << "Truncated (towards zero): ";
    for (int i = 0; i < 4; i++) {
        std::cout << truncated[i] << " ";
    }
    std::cout << std::endl;

    std::cout << "Rounded: ";
    for (int i = 0; i < 4; i++) {
        std::cout << rounded[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}
